package cn.gyzy.mybatis.mapper;

import cn.gyzy.mybatis.pojo.entity.Weibo;
import cn.gyzy.mybatis.pojo.vo.SelectWeiboVO1;
import cn.gyzy.mybatis.pojo.vo.SelectWeiboVO2;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /*
     * 插入微博
     */
    @Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    /*
     *删除指定微博
     */
    @Delete("DELETE FROM weibo WHERE id=#{weiboId}")
    int deleteWeibo(Long weiboId);

    /**
     * 3. 修改指定微博信息
     * UPDATE weibo SET content=#{},created=#{}.... WHERE id=#{xx}
     */
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeibo(Weibo weibo);

    /**
     * 4.查询:单条数据全字段查询[根据ID查询某条微博的所有信息]
     */
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{weiboId}")
    Weibo selectWeiboById(Long weiboId);

    /**
     * 5.查询: 多条数据全字段查询[查询所有的微博信息]
     */
    //@Select("SELECT id,content,created,user_id userId FROM weibo")
    List<Weibo> selectWeibo();

    /**
     * 6.单条数据部分字段查询：查询指定微博的内容和发布时间
     * SELECT content,created FROM weibo WHERE id=200
     */
    //@Select("SELECT content,created FROM weibo WHERE id=#{weiboId}")
    SelectWeiboVO1 selectWeiboVO1(Long weiboId);

    /**
     * 7.多条数据部分字段查询: 查询指定用户发的所有微博的id和内容content
     *   比如: 查询id是100的用户发的微博的id和内容content,参数为用户id[userId]
     */
    //@Select("SELECT id, content FROM weibo WHERE user_id = #{userId}")
    List<SelectWeiboVO2> selectWeiboVO2(Long userId);

    /**
     * 8.动态修改微博信息
     */
    int dynamicUpdateWeibo(Weibo weibo);

    /**
     * 9.数组方式array动态删除微博信息: 根据微博id删除微博
     *   DELETE FROM weibo WHERE id IN (3,5,8)
     */
    int dynamicDeleteWeibo1(Long[] ids);

    /**
     * 10.集合方式list动态删除微博信息: 根据微博id删除微博
     *   DELETE FROM weibo WHERE id IN (3,5,8)
     */
    int dynamicDeleteWeibo2(List<Long> ids);
    /**
     * 11.统计数量:统计微博表中共有多少条数据;
     *    SELECT COUNT(*) FROM weibo
     */
    int selectCount();
}
